package generic;

import java.util.*;

/**
 * @author SWJ
 * @create 2021-06-21 9:19
 * 本类用来测试collection相关的API
 */
public class TestCollection {
    public static void main(String[] args) {
/**创建collection相关的接口对象
 * <Integer>是泛型用来约束集合中的C中的存入元素
 * 泛型中的Type是引用类型不是基本类型*/
        Collection<Integer> c = new ArrayList<Integer>();
        /**创建多态对象
         * 创建一个Integer类型C
         * 针对单个集合的方法*/
        c.add(100);
        c.add(200);
        c.add(300);
        c.add(400);
        c.add(500);
        //向集合中添加元素
        System.out.println(c);
        //直接打印查看集合中的元素
//
//        c.clear();
//        System.out.println(c);
        //打印值为空

        System.out.println(c.contains(300));
        //true判断集合是否包含指定元素300
        System.out.println(c.hashCode());
        System.out.println(c.isEmpty());
        //判断集合是否为空
        System.out.println(c.remove(300));
        //移除集合中的指定元素，首次出现的300
        System.out.println(c);
        System.out.println(c.size());
        //4获取当前元素集合中的元素的个数
        System.out.println(c.equals(200));
        //一个是集合元素一个石Integer200不符合

        Object[] Array = c.toArray();
        //打印数组内容
        System.out.println(Arrays.toString(Array));
        //[100, 200, 400, 500] 将指定集合的对象转化成数组


        Collection<Integer> c2 = new ArrayList();
        //创建第二个集合对象c2
        c2.add(2);
        c2.add(4);
        c2.add(6);
        System.out.println(c2);
        //[2,4,6]
        c.addAll(c2);
        //把c2集合添加到c集合中
        System.out.println(c);
        System.out.println(c2);
        System.out.println(c.containsAll(c2));
        //ture是判断c集合中是否包含c2集合的所有元素
        System.out.println(c.contains(c2));

        System.out.println(c.removeAll(c2));
        //true,删除c集合中属于c2集合的所有元素
        System.out.println(c);

        System.out.println(c.retainAll(c2));
        //移除c集合中属于c2集合中 的所有元素 true,删除c集合
        System.out.println(c);
        //[]移除后为空

        c.add(100);
        c.add(200);
        c.add(300);
        c.add(400);
        c.add(500);

        /**3.遍历 迭代集合中的元素
         *
         * 1.获取集合对应的迭代器
         * 2.判断集合中是否下个元素
         * 3.获取当前迭代的元素 */

        /**
         * 1.如何获取迭代器 c.iterator()
         * 2.判断集合是否有下个元素 it.hasNext()
         * 3.获取当前迭代到的元素 it.next()
         *
         * 通过循环遍历集合
         */

        Iterator <Integer> it = c.iterator();
        //获取迭代器 创建迭代器
        while (it.hasNext()) {
            //hasNext()判断是否有下个元素，如果有，继续循环
            //next()获取本轮循环迭代的元素
            Integer num = it.next();
            System.out.println(num);


        }


    }

}
